

const fs = require('fs');

//fs.open fs.write fs.close
let ws = fs.createWriteStream('.b.txt',{
    flags:'w',
    encoding:'utf8',
    autoClose:true,
    start:0,
    highWaterMark:3,
})

ws.on('open',(fd)=>{
    console.log('open',fd);
})

ws.write("1",function () {
    console.log("write ok");
});
ws.end();//write+close

//我们并发异步操作，串行异步
//由于write方法是异步的，所有如果多个write方法同时操作一个文件，就会有出错的情况。除了第一次write,我们就将其他的排队，
//第一个完成后，清空缓存区。如果缓存区过大会导致浪费内存，所以我们会设置一个预期的值，来进行控制，达到与气候就不要再调用write方法了。
const rs = fs.createReadStream('./a.txt',{
    highWaterMark:3//读取默认64K
});
const wx = fs.createWriteStream('./b.txt',{
    highWaterMark:2 //写入内存默认是16k
});

rs.on('data',function (data) {
    let flag = wx.write(data);
    if(!flag){
        console.log("吃不下了");
        rs.pause();
    }
})

wx.on('drain',function () {//目前所有的数据都完毕了
    console.log("吃完了，再喂我吧");//接着在真是的往文件里写
    rs.resume();
})

//a.pipe(b)
